1
Architecture interne : pointeurs klass et super
AI035Lesson 14
00:00

Au niveau du C, les objets Ruby sont représentés par des structures qui séparent les données du comportement par une hiérarchie basée sur des pointeurs. Le pointeur klass connecte une instance à sa "classe associée" (où se trouvent les méthodes), tandis que le pointeur super connecte les classes à leurs ancêtres, créant une carte structurelle utilisée par la machine virtuelle Ruby pour résoudre l'héritage.

1. Le pointeur klass et les drapeaux

Chaque objet Ruby contient un en-tête avec un klass pointeur et un masque de drapeaux. Ces drapeaux identifient l'état interne de l'objet, comme marquer les "classes virtuelles" automatiquement créées avec un 'V' pour gérer les affectations de méthodes singleton.

2. Découplage de l'état (Figure 24.1)

Une instance comme lucille stocke ses propres variables d'instance, mais elle ne possède aucune méthode propre. Son klass pointeur oriente la machine virtuelle vers la Guitar table de méthodes de l'objet classe.

lucille@valeurClasse : Guitarjouer()cordes()VClasse : Objectcloner(), dupliquer()klasssuper

3. La chaîne d'héritage

Lorsque lucille.jouer() est appelé, Ruby suit le klass pointeur. Si la méthode n'est pas trouvée dans Guitar, alors il suit le super pointeur vers Object, permettant l'accès à cloner ou dupliquer.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>